home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagn_r.zip / NUMBERS.SWG / 0038_HILO Bit Operators.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-21  |  1KB  |  65 lines

  1. UNIT HiLo;
  2. (**) INTERFACE (**)
  3.   FUNCTION SwapN(B : Byte) : Byte;
  4.   FUNCTION HiN(B : Byte) : Byte;
  5.   FUNCTION LoN(B : Byte) : Byte;
  6.  
  7.   FUNCTION SwapW(L : LongInt) : LongInt;
  8.   FUNCTION HiW(L : LongInt) : Word;
  9.   FUNCTION LoW(L : LongInt) : Word;
  10.  
  11.   FUNCTION WordFromB(H, L : Byte) : Word;
  12.   FUNCTION LongFromW(H, L : Word) : LongInt;
  13.  
  14. (**) IMPLEMENTATION (**)
  15.   FUNCTION SwapN(B : Byte) : Byte; Assembler;
  16.   ASM
  17.     MOV AL, B         {byte in AL}
  18.     MOV AH, AL        {now in AH too}
  19.     MOV CL, 4         {set up to shift by 4}
  20.     SHL AL, CL        {AL has low nibble -> high}
  21.     SHR AH, CL        {AH has high nibble -> low}
  22.     ADD AL, AH        {combine them}
  23.   END;
  24.  
  25.   FUNCTION HiN(B : Byte) : Byte; Assembler;
  26.   ASM
  27.     MOV AL, B
  28.     MOV CL, 4
  29.     SHR AL, CL
  30.   END;
  31.  
  32.   FUNCTION LoN(B : Byte) : Byte; Assembler;
  33.   ASM
  34.     MOV AL, B
  35.     AND AL, 0Fh
  36.   END;
  37.  
  38.   FUNCTION SwapW(L : LongInt) : LongInt; Assembler;
  39.   ASM
  40.     MOV AX, Word(L+2)
  41.     MOV DX, Word(L)
  42.   END;
  43.  
  44.   FUNCTION HiW(L : LongInt) : Word; Assembler;
  45.   ASM
  46.     MOV AX, Word(L+2)
  47.   END;
  48.  
  49.   FUNCTION LoW(L : LongInt) : Word; Assembler;
  50.   ASM
  51.     MOV AX, Word(L);
  52.   END;
  53.  
  54.   FUNCTION WordFromB(H, L : Byte) : Word; Assembler;
  55.   ASM
  56.     MOV AH, H
  57.     MOV AL, L
  58.   END;
  59.  
  60.   FUNCTION LongFromW(H, L : Word) : LongInt; Assembler;
  61.   ASM
  62.     MOV DX, H
  63.     MOV AX, L
  64.   END;
  65. END.